package zmee.pur.formplugin;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.control.Control;
import kd.bos.form.field.ComboEdit;
import kd.bos.form.field.DateEdit;
import kd.bos.form.field.TextEdit;

import java.util.EventObject;

/**
 * @Author: zyj
 * @Date: 2023/9/4 14:31
 * @Description: 标书编制: 一些字段必录性 只加红星，真正校验在保存 提交 合法性校验中
 */
public class SrcBiddocMustWriteBillPlugin extends AbstractBillPlugIn {

    @Override
    public void afterBindData(EventObject e) {
        super.afterBindData(e);
        // 是否集团招标
        Boolean isgroupbidbing = (Boolean) this.getModel().getValue("zmee_isgroupbidbing");
        if (isgroupbidbing) {
            setMustInput("zmee_combofield7");
            setMustInput("zmee_datefield1");
            setMustInput("zmee_combofield2");
            setMustInput("zmee_combofield3");
            setMustInput("zmee_textareafield5");
            setMustInput("zmee_combofield5");
            setMustInput("zmee_textfield2");
            setMustInput("zmee_textareafield1");
            setMustInput("zmee_textareafield2");
            setMustInput("zmee_mulcombofield");
            setMustInput("zmee_combofield");
            setMustInput("zmee_combofield6");
            setMustInput("zmee_combofield4");
            setMustInput("zmee_textareafield8");
            setMustInput("zmee_textareafield4");
            setMustInput("zmee_textareafield3");
            setMustInput("zmee_combofield1");
            setMustInput("zmee_textareafield7");
            setMustInput("zmee_datefield2");
            setMustInput("zmee_textfield3");
            setMustInput("zmee_textareafield6");
        }
        // 招标代理公司 为有的话 合同估算价（万元）（2位小数）必填
        Object combofield6 = this.getModel().getValue("zmee_combofield6");
        if ("0".equals(combofield6)) {
            // 合同估算价（万元）（2位小数）
            setMustInput("zmee_textfield");
        }
        // 评审办法 为综合评分法的话 商务资信分 技术分 价格分 必填
        Object combofield1 = this.getModel().getValue("zmee_combofield1");
        if ("0".equals(combofield1)) {
            // 商务资信分
            setMustInput("zmee_decimalfield");
            // 技术分
            setMustInput("zmee_decimalfield1");
            // 价格分
            setMustInput("zmee_decimalfield2");
        }
    }

    @Override
    public void propertyChanged(PropertyChangedArgs e) {
        super.propertyChanged(e);
        String name = e.getProperty().getName();
        Object changeSet = e.getChangeSet()[0].getNewValue();
        if("zmee_combofield6".equals(name)) {
            // 招标代理公司 为有的话
            if ("0".equals(changeSet)) {
                // 合同估算价（万元）（2位小数）
                setMustInput("zmee_textfield");
            } else {
                // 合同估算价（万元）（2位小数）
                setMustInputFalse("zmee_textfield");
            }
        } else if ("zmee_combofield1".equals(name)) {
            // 评审办法 为综合评分法的话
            if ("0".equals(changeSet)) {
                // 商务资信分
                setMustInput("zmee_decimalfield");
                // 技术分
                setMustInput("zmee_decimalfield1");
                // 价格分
                setMustInput("zmee_decimalfield2");
            } else {
                // 商务资信分
                setMustInputFalse("zmee_decimalfield");
                // 技术分
                setMustInputFalse("zmee_decimalfield1");
                // 价格分
                setMustInputFalse("zmee_decimalfield2");
            }
        }
    }

    /**
     * 修改控件必录性为 true
     * @param identifying 控件标识
     */
    public void setMustInput(String identifying) {
        Control control = this.getView().getControl(identifying);
        if (control instanceof ComboEdit) {
            ((ComboEdit) control).setMustInput(true);
        } else if (control instanceof DateEdit) {
            ((DateEdit) control).setMustInput(true);
        } else if (control instanceof TextEdit) {
            ((TextEdit) control).setMustInput(true);
        }
    }

    /**
     * 修改控件必录性 为false
     * @param identifying 控件标识
     */
    public void setMustInputFalse(String identifying) {
        Control control = this.getView().getControl(identifying);
        if (control instanceof ComboEdit) {
            ((ComboEdit) control).setMustInput(false);
        } else if (control instanceof DateEdit) {
            ((DateEdit) control).setMustInput(false);
        } else if (control instanceof TextEdit) {
            ((TextEdit) control).setMustInput(false);
        }
    }
}
